﻿using CheccCoverplateCulvertAssemble.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Checc_CircularCulvert_Assemble.commons.overall
{
    /// <summary>
    /// 进口急流槽基类
    /// </summary>
    public class CommonChuteInBase : MyNotifyPropertyChanged
    {
        private CommonChuteIn _leftCommonChuteIn = new CommonChuteIn();
        private CommonChuteIn _rightCommonChuteIn = new CommonChuteIn();

        /// <summary>
        /// 右侧进口急流槽
        /// </summary>
        public CommonChuteIn RightCommonChuteIn
        {
            get { return _rightCommonChuteIn; }
            set
            {
                if (value == _rightCommonChuteIn)
                    return;
                NotifyPropertyChanged(() => RightCommonChuteIn);
                _rightCommonChuteIn = value;
            }
        }

        /// <summary>
        /// 左侧进口急流槽
        /// </summary>
        public CommonChuteIn LeftCommonChuteIn
        {
            get { return _leftCommonChuteIn; }
            set
            {
                if (value == _leftCommonChuteIn)
                    return;
                NotifyPropertyChanged(() => LeftCommonChuteIn);
                _leftCommonChuteIn = value;
            }
        }
    }

    /// <summary>
    /// 进口急流槽
    /// </summary>
    public class CommonChuteIn : MyNotifyPropertyChanged
    {
        private double _height;

        /// <summary>
        /// 急流槽高度
        /// </summary>
        public double Height
        {
            get { return _height; }
            set
            {
                if (value == _height)
                    return;
                NotifyPropertyChanged(() => Height);
                _height = value;
            }
        }

        private double _bottomPaveThickness;

        /// <summary>
        /// 槽底铺砌厚度
        /// </summary>
        public double BottomPaveThickness
        {
            get { return _bottomPaveThickness; }
            set
            {
                if (value == _bottomPaveThickness)
                    return;
                NotifyPropertyChanged(() => BottomPaveThickness);
                _bottomPaveThickness = value;
            }
        }

        private double _bodySlope;

        /// <summary>
        /// 槽体坡比
        /// </summary>
        public double BodySlope
        {
            get { return _bodySlope; }
            set
            {
                if (value == _bodySlope)
                    return;
                NotifyPropertyChanged(() => BodySlope);
                _bodySlope = value;
            }
        }

        private double _shaftBottomEndlongSlope;

        /// <summary>
        /// 井底纵坡
        /// </summary>
        public double ShaftBottomEndlongSlope
        {
            get { return _shaftBottomEndlongSlope; }
            set
            {
                if (value == _shaftBottomEndlongSlope)
                    return;
                NotifyPropertyChanged(() => ShaftBottomEndlongSlope);
                _shaftBottomEndlongSlope = value;
            }
        }

        private double _shaftBottomPaveThickness;

        /// <summary>
        /// 井底铺砌厚度
        /// </summary>
        public double ShaftBottomPaveThickness
        {
            get { return _shaftBottomPaveThickness; }
            set
            {
                if (value == _shaftBottomPaveThickness)
                    return;
                NotifyPropertyChanged(() => ShaftBottomPaveThickness);
                _shaftBottomPaveThickness = value;
            }
        }

        private double _shaftBottomBaseThickness;

        /// <summary>
        /// 井底基础厚度
        /// </summary>
        public double ShaftBottomBaseThickness
        {
            get { return _shaftBottomBaseThickness; }
            set
            {
                if (value == _shaftBottomBaseThickness)
                    return;
                NotifyPropertyChanged(() => ShaftBottomBaseThickness);
                _shaftBottomBaseThickness = value;
            }
        }

        private double _shaftBottomBaseDeep;

        /// <summary>
        /// 井底基础埋深
        /// </summary>
        public double ShaftBottomBaseDeep
        {
            get { return _shaftBottomBaseDeep; }
            set
            {
                if (value == _shaftBottomBaseDeep)
                    return;
                NotifyPropertyChanged(() => ShaftBottomBaseDeep);
                _shaftBottomBaseDeep = value;
            }
        }

        private double _baseEdgeThickness;

        /// <summary>
        /// 基础襟边厚度
        /// </summary>
        public double BaseEdgeThickness
        {
            get { return _baseEdgeThickness; }
            set
            {
                if (value == _baseEdgeThickness)
                    return;
                NotifyPropertyChanged(() => BaseEdgeThickness);
                _baseEdgeThickness = value;
            }
        }

        private double _sinkFlowWallHeight;
        /// <summary>
        /// 汇流墙高
        /// </summary>
        public double SinkFlowWallHeight
        {
            get { return _sinkFlowWallHeight; }
            set
            {
                if (value == _sinkFlowWallHeight)
                    return;
                NotifyPropertyChanged(() => SinkFlowWallHeight);
                _sinkFlowWallHeight = value;
            }
        }

        private double _sinkFlowWallLegth;
        /// <summary>
        /// 汇流墙长
        /// </summary>
        public double SinkFlowWallLegth
        {
            get { return _sinkFlowWallLegth; }
            set
            {
                if (value == _sinkFlowWallLegth)
                    return;
                NotifyPropertyChanged(() => SinkFlowWallLegth);
                _sinkFlowWallLegth = value;
            }
        }

        private double _sinkFlowWallDiffusionRatio;
        /// <summary>
        /// 汇流墙扩散比
        /// </summary>
        public double SinkFlowWallDiffusionRatio
        {
            get { return _sinkFlowWallDiffusionRatio; }
            set
            {
                if (value == _sinkFlowWallDiffusionRatio)
                    return;
                NotifyPropertyChanged(() => SinkFlowWallDiffusionRatio);
                _sinkFlowWallDiffusionRatio = value;
            }
        }

        private double _cutoffWallWidth;
        /// <summary>
        /// 截水墙宽
        /// </summary>
        public double CutoffWallWidth
        {
            get { return _cutoffWallWidth; }
            set
            {
                if (value == _cutoffWallWidth)
                    return;
                NotifyPropertyChanged(() => CutoffWallWidth);
                _cutoffWallWidth = value;
            }
        }

        private double _cutoffWallHeight;
        /// <summary>
        /// 截水墙高
        /// </summary>
        public double CutoffWallHeight
        {
            get { return _cutoffWallHeight; }
            set
            {
                if (value == _cutoffWallHeight)
                    return;
                NotifyPropertyChanged(() => CutoffWallHeight);
                _cutoffWallHeight = value;
            }
        }

        private double _shaftWallSlopeRatio;
        /// <summary>
        /// 井壁坡比
        /// </summary>
        public double ShaftWallSlopeRatio
        {
            get { return _shaftWallSlopeRatio; }
            set
            {
                if (value == _shaftWallSlopeRatio)
                    return;
                NotifyPropertyChanged(() => ShaftWallSlopeRatio);
                _shaftWallSlopeRatio = value;
            }
        }

        private double _topWidth;
        /// <summary>
        /// 槽顶宽度
        /// </summary>
        public double TopWidth
        {
            get { return _topWidth; }
            set
            {
                if (value == _topWidth)
                    return;
                NotifyPropertyChanged(() => TopWidth);
                _topWidth = value;
            }
        }

        private double _shaftBottomCentreLength;

        /// <summary>
        /// 井底中心长
        /// </summary>
        public double ShaftBottomCentreLength
        {
            get { return _shaftBottomCentreLength; }
            set
            {
                if (value == _shaftBottomCentreLength)
                    return;
                NotifyPropertyChanged(() => ShaftBottomCentreLength);
                _shaftBottomCentreLength = value;
            }
        }

        private double _gritBasinDeep;

        /// <summary>
        /// 沉砂池深度
        /// </summary>
        public double GritBasinDeep
        {
            get { return _gritBasinDeep; }
            set
            {
                if (value == _gritBasinDeep)
                    return;
                NotifyPropertyChanged(() => GritBasinDeep);
                _gritBasinDeep = value;
            }
        }

        private double _shaftDeep;

        /// <summary>
        /// 急流槽井深
        /// </summary>
        public double ShaftDeep
        {
            get { return _shaftDeep; }
            set
            {
                if (value == _shaftDeep)
                    return;
                NotifyPropertyChanged(() => ShaftDeep);
                _shaftDeep = value;
            }
        }

        private double _earWallInterval;

        /// <summary>
        /// 耳墙间距
        /// </summary>
        public double EarWallInterval
        {
            get { return _earWallInterval; }
            set
            {
                if (value == _earWallInterval)
                    return;
                NotifyPropertyChanged(() => EarWallInterval);
                _earWallInterval = value;
            }
        }

        private double _earWallHeight;

        /// <summary>
        /// 耳墙高度
        /// </summary>
        public double EarWallHeight
        {
            get { return _earWallHeight; }
            set
            {
                if (value == _earWallHeight)
                    return;
                NotifyPropertyChanged(() => EarWallHeight);
                _earWallHeight = value;
            }
        }

        private double _earWallWidth;

        /// <summary>
        /// 耳墙宽度
        /// </summary>
        public double EarWallWidth
        {
            get { return _earWallWidth; }
            set
            {
                if (value == _earWallWidth)
                    return;
                NotifyPropertyChanged(() => EarWallWidth);
                _earWallWidth = value;
            }
        }

        private double _sideWiden;

        /// <summary>
        /// 洞口侧加宽
        /// </summary>
        public double SideWiden
        {
            get { return _sideWiden; }
            set
            {
                if (value == _sideWiden)
                    return;
                NotifyPropertyChanged(() => SideWiden);
                _sideWiden = value;
            }
        }

    }
}
